home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1991 August / 64er_Magazin_91-08_1991_Markt__Technik_de_Side_A.d64 / demo 1.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  1KB  |  39 lines

  1. 10 sys36864
  2. 20 .opt oo
  3. 30 *= $c000
  4. 40 ; dieses programm definiert einen neuen
  5. 42 ; basic-befehl namens !s. dieser befehl
  6. 44 ; erzeugt einen ton.
  7. 46 ; nikolaus heusler, muenchen, 3.91
  8. 100 ibas =776;vektor fuer basicbefehl
  9. 110 chrget =115;naechstes zeichen holen
  10. 120 inter =$a7ae;interpreterschleife
  11. 130 oldbas =$a7e7;alten basicbefehl bearbeiten
  12. 150 syntax =$af08;syntax error
  13. 160 sid =54272;soundchip basisadresse
  14. 200 ; --- neuen befehl definieren
  15. 300 lda #<neubef:ldy #>neubef;zeiger auf neue befehlsroutine
  16. 310 sta ibas:sty ibas+1;vektor verbiegen
  17. 320 rts;und fertig
  18. 330 ; --- neuen basicbefehl ausfuehren
  19. 340 neubef jsr chrget;erstes zeichen holen
  20. 350 cmp #33;war es das ausrufezeichen
  21. 360 beq call;ja, dann neuer befehl
  22. 370 ora #0;sonst flags setzen:jmp oldbas;und normal weitermachen
  23. 380 ; --- ausrufezeichen erkannt
  24. 390 call jsr chrget;zeichen nach '!' holen
  25. 400 cmp #83;buchstabe 's' testen
  26. 410 beq stimmt;ja, dann !s befehl
  27. 420 jmp syntax;sonst syntax error ausgeben, fertig
  28. 430 ; --- !s befehl - ton ausgeben
  29. 440 stimmt lda #0:ldx #24;sid-register loeschen
  30. 450 clrsid sta sid,x:dex;loesch-schleife:bpl clrsid;alle register auf null
  31. 460 lda #15:sta sid+24;lautstaerke 15
  32. 470 lda #100:sta sid+1;tonhoehe festlegen
  33. 480 lda #240:sta sid+6;wellenform
  34. 490 lda #17:sta sid+4;ton einschalten
  35. 500 ldx #0:ldy #0;warteschleife
  36. 510 wait nop:dex:bne wait:dey:bne wait;wartet ca. 1/2 sekunde
  37. 520 lda #16:sta sid+4;ton ausschalten
  38. 530 jsr chrget:jmp inter;befehl fertig, weiter wie gehabt
  39.